package android.jucai.com.duolinedemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
	
	private LinearLayout mColumnsLinear;
	private int column = 4;
	private LayoutInflater inflater;
	private int index = 0;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//初始化组件
		mColumnsLinear = (LinearLayout) findViewById(R.id.columns_linear);
		//获取LayoutInflater对象
		inflater = LayoutInflater.from(this);
		//生成多行多列的线性布局,
		displayColumns(13);
	}
	
	/**
	 * 生成多行多列的线性布局
	 * @param displayNumber 需要生成的个数，这里是需要生成的TextView的总个数
	 */
	private void displayColumns(int displayNumber) {
		//判断
		if (displayNumber <= 0) {
			return;
		}
		//判断是否被每行显示的列数整除
		boolean boo = false;
		//获取列数
		int rows = displayNumber / column;
		//判断，得到是否被每行显示的列数整除
		if (displayNumber % column == 0) {
			boo = true;
		} else {
			boo = false;
		}
		
		if (boo) {
			//如果能够被整除
			for (int i = 0; i < rows; i++) {
				createLinear(column);
			}
			return;
		}else{
			//如果不能够被整除
			for (int i = 0; i < rows; i++) {
				createLinear(column);
			}
			//用%，得到最后剩下的，不足一行的
			rows = displayNumber % column;
			//创建布局一行的布局
			createLinear(rows);
		}
		
	}
	
	/**
	 * 创建每一行显示的线性布局
	 * @param i 一行显示的textview的个数
	 */
	private void createLinear(int i) {
		//创建线性布局
		LinearLayout layout = new LinearLayout(this);
		//设置LayoutParams
		LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
				LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
		//设置为水平布局
		layout.setOrientation(LinearLayout.HORIZONTAL);
		//为线性布局这只LayoutParams
		layout.setLayoutParams(lp);
		//循环添加
		for (int j = 0; j < i; j++) {
			//获取需要添加的布局文件
			View view = inflater.inflate(R.layout.item_column, null, false);
			//获取组件
			TextView tv = (TextView) view.findViewById(R.id.text);
			//设值
			tv.setText(++index + "");
			//绑定点击事件
			tv.setOnClickListener(clickListener);
			//添加到创建的线性布局中
			layout.addView(view);
		}
		//添加到显示的父线性布局中
		mColumnsLinear.addView(layout);
	}
	
	/**
	 * 点击事件
	 */
	private View.OnClickListener clickListener = new View.OnClickListener() {
		
		@Override
		public void onClick(View v) {
			System.out.println(((TextView)v).getText());
		}
	};
}
